# 非PM2 启动方式
# 需要把dockerfile和packge.json放在和dist跟目录在同目录下
# FROM node:lts-alpine  / node:alpine
# 指定版本 node:18-lts-alpine / node:18-alpine
# 查看docker 官方Node.js镜像 版本 https://hub.docker.com/_/node?tab=tags&page=1&ordering=last_updated
#---------------------------- 开始
#FROM node:alpine
#
#WORKDIR /app
#
## 将构建上下文中的 dist 目录内容复制到容器的 /app 目录下
#COPY dist/ ./
#
#RUN npm config set registry https://registry.npmmirror.com/ && npm install
#
#EXPOSE 9420
#
#CMD [ "npm", "run", "start:prod" ]
#------------------------------ 结束

# docker 新版多阶段构建
#不需要变动项目结构，在服务器上编译，只需要删除dist目录和node_modules目录，然后执行镜像构建
# 使用腾讯云的免费docker私有仓库构建
# https://console.cloud.tencent.com/tcr/repository/ci/ciEdit/ccr/nestservice/nestjs/1
# 第一阶段构建
FROM node:alpine AS builder

WORKDIR /app

COPY package.json ./

RUN npm config set registry https://registry.npmmirror.com/ && npm install

COPY . .

RUN npm run build

RUN echo " npm run build 1：" && ls -al

# 第二阶段构建
FROM node:alpine

WORKDIR /app

COPY --from=builder /app/dist ./
COPY --from=builder /app/package.json ./
COPY --from=builder /app/node_modules ./node_modules

RUN echo " 阶段2：" && ls -al

EXPOSE 9420

CMD ["npm", "run", "start:prod"]

# 构建镜像
# docker build --no-cache -t nestjs_serve:tag .
# 启动容器 映射目录 （宿主机上的/www/nesjsFile/public目录存在，并且具有适当的读写权限，以便容器可以访问它）
# docker run -itd --name run_mydocker_nestjs -p 9420:9420 -v /www/nesjsFile/public:/app/public nestjs_serve:tag
